<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8"/>
<title>DNMP - контейнеры и метаданные</title>
<link href="ice.css" type="text/css" rel="stylesheet"/>
</head>
<body>
<p><b>Distributed Network Messaging Protocol</b></p>

<p>Коммерческое использование только с разрешения автора.<br>
При использовании необходимо явно указывать ссылку на источник.</p>

<p>Sergey Bodrov, 2010-04-08</p>

<p><b>Контейнеры и метаданные</b></p>

<p>Контейнер (Container) - это некоторый информационный объект (сообщение, картинка, двоичный файл, итд..).  Контейнер содержит метаданные (описание объекта в контейнере) и данные.</p>

<p>Контейнер определяется идентификатором вида &lt;CONT GUID="XXX" CID="YYY" /&gt;, который служит "ссылкой" на источник контейнера и сам контейнер. Идентификатор контейнера может быть вставлен в текстовое сообщение.</p>

<p>Контейнеры могут быть включены в сообщение, или могут быть запрошены по идентификатору.</p>

<p><b>Формат данных контейнера</b></p>

<p>Данные контейнера могут быть следующих видов:<br>
<li> Целое число: -N, 0, N
<li> Число с десятичной точкой: -N.n, 0, N.n
<li> Строка байтов: "Abc"
<li> Список: (значение, значение2, ...)  где значение может быть любого вида
<li> Словарь: {"имя": значение, "имя2": значение2} где "имя" это строка, а значение может быть любого вида
</p>

<p>Если основой контейнера является Словарь, то он содержит именованные метаданные (имя объекта, дата создания, контрольная сумма, итд..) и сам объект. Любой другой тип основы контейнера означает, что метаданных в нем нет. Список не рекомендуется использовать в качестве основы контейнера.</p>

<p>Пример контейнера:<br>
<code>
{"name": "image.jpg"
,"size": 32
,"create_date": "2010-04-08"
,"data": "00101010110100100101001001010101"
}
</code>
</p>

<p><b>Сериализация контейнера</b></p>

<p>Контейнер может быть сериализован в один из стандартных форматов: XML, JSON, BENCODE, CSV, INI. Если формат сериализации не поддерживает числа, то они сохраняются в виде строк. Если не поддерживается Список, то используется Словарь с именами "0", "1", "2", .. </p>

</body>
</html>